/*
 * Copyright (C) 2015 yixun All Rights Reserved.
 * 
 * AreaService.java
 */
package com.yixun.qfbao.api.service;

import com.yixun.qfbao.apidto.*;
import com.yixun.qfbao.model.PartnerInfo;
import com.yixun.qfbao.xf.model.dto.CustomerPremisesDto;

import java.text.ParseException;

/**
 * [文件名称]<br>
 * CPReportService.java<br>
 * <br>
 * [文件描述]<br>
 *  service interface<br>
 *  客户报备
 * <br>
 * [修改记录]<br>
 * 2017-11-9 10:04:27<br>
 * 
 * @author JHSong
 * @version 1.00
 */
public interface CPReportService {
	

	/**
	 * 报备分配给案场经纪人
	 * @param reqDto
	 * @return
	 */
	DistCPAgentResDto distCPAgent(DistCPAgentReqDto reqDto);
	
	/**
	 * 修改报备客户信息
	 * @param reqDto
	 * @return
	 */
	EditCPCusInfoResDto editCPCusInfo(EditCPCusInfoReqDto reqDto);
	
	/**
	 * 报备详情
	 * @param reqDto
	 * @return
	 */
	GetCPDetailResDto getCPDetail(GetCPDetailReqDto reqDto);
	/**
	 * 经纪人发起申诉
	 *@author xiaojin.li
	 *@date 2017年12月7日上午11:19:13
     *@return
     * @param reqDto
     * @param assistantAccessToken
	 */
	AddAppealResDto addAppeal(AddAppealReqDto reqDto, String assistantAccessToken);

    /**
     * M2请求接口：更新交易状态
     * @param reqDto
     * @param customerPremisesDto
     * @param agencyAccessToken
     * @param assistantAccessToken @return
     */
    UpdateSaleStatusResDto updateSaleStatusHander(UpdateSaleStatusReqDto reqDto, CustomerPremisesDto customerPremisesDto, String agencyAccessToken, String assistantAccessToken);

	/**
	 * 批量校验报备
	 * @param params
	 * @return
	 */
	BatchReportResDto checkBatchReport(BatchReportReqDto params) throws ParseException;

	/**
	 * 批量添加报备
	 * @param params
	 * @param assistantAccessToken
	 * @return
	 */
	AddBatchReportResDto addBatchReport(BatchReportReqDto params, String assistantAccessToken);

	/**
	 * 佣金设置
	 * @param confirmStatus
	 * @param cpDto
	 * @param remark
	 * @param partnerInfo
	 * @param customerPremisesId
	 */
	void operateCommission(String confirmStatus, CustomerPremisesDto cpDto, String remark, PartnerInfo partnerInfo, Long customerPremisesId);

	/**
	 *   案场换房
	 * @param reqDto
	 * @param customerPremisesDto
	 * @param agencyAccessToken
	 * @param assistantAccessToken
	 * @return
	 */
	ExchangeHousesResDto exchangeHouses(ExchangeHousesReqDto reqDto, CustomerPremisesDto customerPremisesDto, String agencyAccessToken, String assistantAccessToken);

	/**
	 * M2请求接口：逆向更新交易状态
	 * @param reqDto
	 * @param customerPremisesDto
	 * @param agencyAccessToken
	 * @param assistantAccessToken @return
	 */
	UpdateSaleStatusResDto newUpdateSaleStatusHander(UpdateSaleStatusReqDto reqDto, CustomerPremisesDto customerPremisesDto, String agencyAccessToken, String assistantAccessToken);

	/**
	 * M2请求接口：逆向更改置业顾问
	 * @param reqDto
	 * @param reqDto
	 * @return
	 */
	UpdateAdviserResDto m2ToUpdateAdviser(UpdateAdviserReqDto reqDto);
}
